#include "../Header Files/Vec2.h"


Vec2::Vec2(void)
{
}

Vec2::Vec2(double _x, double _y)
{
	x = _x;
	y = _y;
}


Vec2::~Vec2(void)
{
}

Vec2 &Vec2::operator=(const Vec2 &rhs)
{
	this->x		= rhs.x;
	this->y		= rhs.y;

	return *this;
}

int Vec2::operator==(const Vec2 &rhs) const
{
	if((this->x == rhs.x) && (this->y == rhs.y)){
		return 1;
	}
	return 0;
	
}

int Vec2::operator<(const Vec2 &rhs) const
{
	if(this->x < rhs.x){
			return true;
		}else{
			if(this->x > rhs.x){
				return false;
			}
		}
		if(this->y < rhs.y){
			return true;
		}else{
			if(this->y > rhs.y){
				return false;
			}
		}	
		return false;
}



Vec2 Vec2::diff(const Vec2 v)
{
	return Vec2(x - v.x, y - v.y);
}

Vec2 Vec2::mul(const Vec2 v)
{
	return Vec2(x * v.x, y * v.y);
}

Vec2 Vec2::add(const Vec2 v)
{
	return Vec2(x + v.x, y + v.y);
}

Vec2 Vec2::mul(const double a)
{
	return Vec2(x * a, y * a);
}

double Vec2::length_()
{
	return sqrt(pow(x, 2) + pow(y, 2));
}

Vec2 Vec2::normalize()
{
	double l = length_();
	if(l == 0){
		return Vec2(0, 0);
	}
	return Vec2(x / l, y / l);
}